//package com.isoftstone.bases.seaweed.service.impl;
//
//import com.isoftstone.bases.seaweed.config.SeaweedProperties;
//import com.isoftstone.bases.seaweed.service.SeaweedService;
//import java.io.IOException;
//import java.io.InputStream;
//import java.util.List;
//import net.anumbrella.seaweedfs.core.FileSource;
//import net.anumbrella.seaweedfs.core.FileTemplate;
//import net.anumbrella.seaweedfs.core.file.FileHandleStatus;
//import net.anumbrella.seaweedfs.core.http.StreamResponse;
//import org.apache.http.entity.ContentType;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.web.multipart.MultipartFile;
//
///**
// * @author:zhanghao
// * @since: 0.1.1 , 2019/7/4 16:05
// */
//@Service
//public class SeaweedServiceImpl implements SeaweedService {
//
//  private FileSource fileSource = new FileSource();
//
//  private FileTemplate fileTemplate;
//
//  @Autowired
//  SeaweedProperties seaweedProperties;
//
//  @Override
//  public void startConnection() throws IOException {
//    //master ip及端口
//    fileSource.setHost(seaweedProperties.getIp());
//    fileSource.setPort(seaweedProperties.getPort());
//    //连接超时时间
//    fileSource.setConnectionTimeout(seaweedProperties.getTime());
//    //建立连接
//    fileSource.startup();
//    this.fileTemplate = new FileTemplate(fileSource.getConnection());
//  }
//
//  @Override
//  public void stopConnection() {
//    fileSource.getConnection().stop();
//  }
//
//  @Override
//  public FileHandleStatus uploadFile(String fileName, MultipartFile file)
//      throws IOException {
//    startConnection();
//    return getFileStatus(
//        this.fileTemplate.saveFileByStream(fileName, file.getInputStream()).getFileId());
//  }
//
//  @Override
//  public FileHandleStatus uploadFile(String fileName, InputStream inputStream)
//      throws IOException {
//    startConnection();
//    return getFileStatus(
//        this.fileTemplate.saveFileByStream(fileName, inputStream).getFileId());
//  }
//
//  @Override
//  public FileHandleStatus deleteFile(String fileId) throws IOException {
//    startConnection();
//    FileHandleStatus fileHandleStatus = getFileStatus(fileId);
//    this.fileTemplate.deleteFile(fileId);
//    return fileHandleStatus;
//  }
//
//  @Override
//  public void betchDeleteFiles(List<String> fileIds) throws IOException {
//    if (fileIds != null) {
//      for (String fileId : fileIds) {
//        deleteFile(fileId);
//      }
//    }
//  }
//
//  @Override
//  public FileHandleStatus updateFile(String fileId, String fileName, MultipartFile file)
//      throws IOException {
//    startConnection();
//    return getFileStatus(this.fileTemplate
//        .updateFileByStream(fileId, fileName, file.getInputStream(), ContentType.DEFAULT_BINARY)
//        .getFileId());
//  }
//
//  @Override
//  public StreamResponse getFileStreamByfid(String fileId) throws IOException {
//    startConnection();
//    return this.fileTemplate.getFileStream(fileId);
//  }
//
//  @Override
//  public StreamResponse getFileStreamByUrl(String url) throws IOException {
//    String[] urls = url.split("/");
//    return this.getFileStreamByfid(urls[3]);
//  }
//
//  @Override
//  public FileHandleStatus getFileStatus(String fileId) throws IOException {
//    startConnection();
//    FileHandleStatus noUrlStatus = this.fileTemplate.getFileStatus(fileId);
//    FileHandleStatus fileHandleStatus = new FileHandleStatus(noUrlStatus.getFileId(),
//        noUrlStatus.getLastModified(),
//        noUrlStatus.getFileName().substring(8),
//        noUrlStatus.getContentType(),
//        noUrlStatus.getSize());
//    fileHandleStatus.setFileUrl(this.fileTemplate.getFileUrl(fileId));
//    return fileHandleStatus;
//  }
//
//
//}
